package shujia.day18;

/*
    在学习反射之前，我们得先知道如何获取一个类的Class对象

 */
public class ClassDemo1 {
    public static void main(String[] args) throws Exception{
        //方式1：在已经有该类的对象前提下获取 getClass();
        Student s1 = new Student(1001);
        Class<? extends Student> c1 = s1.getClass();

        Student s2 = new Student(1002);
        Class<? extends Student> c2 = s2.getClass();
        System.out.println(s1==s2); // 不同的对象地址值不一样
        System.out.println(c1==c2); // 同一个类的Class对象在内存中只有一个

        System.out.println("------------------------------------");
        //方式2：直接通过类名.class获取
        Class<Student> c3 = Student.class;
        System.out.println(c1==c3); // 同一个类的Class对象在内存中只有一个
        System.out.println(c2==c3); // 同一个类的Class对象在内存中只有一个

        System.out.println("-------------------------------------");
        //方式3：通过Class类中的静态方法forName()
        Class<?> c4 = Class.forName("shujia.day18.Student");
        System.out.println(c1==c4);
        System.out.println(c2==c4);
        //对于这个案例来说，都是获取Student类class文件在内存中的Class对象


    }
}
